package com.htwy.youPu.bean;

import com.htwy.core.config.WebappConfig;
import com.htwy.core.model.BaseModel;
import com.htwy.kits.NumberKit;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IBean;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.SqlPara;
import com.jfinal.plugin.ehcache.CacheName;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>结算单详情<br />
 * 表名:HT_Jsdxq<br />
 * 编写时间:2018-05-30<br />
 * @version 1.0-SNAPSHOT
 */
@CacheName("com.htwy.youPu.bean.Jsdxq")
public class Jsdxq extends BaseModel<Jsdxq> implements IBean{

    public static Jsdxq dao = new Jsdxq();


    /**
     * <p>设置主键</p>
     * @param uuid 主键
     * @return 当前对象
     */
    public Jsdxq setUuid(String uuid){
        set("uuid", uuid);
        return this;
    }

    /**
     * <p>获取主键</p>
     * @return 主键
     */
    public String getUuid(){
        return getStr("uuid");
    }



    /**
     * <p>设置结算单号</p>
     * @param jsdId 结算单号
     * @return 当前对象
     */
    public Jsdxq setJsdId(String jsdId){
        set("jsdId", jsdId);
        return this;
    }

    /**
     * <p>获取结算单号</p>
     * @return 结算单号
     */
    public String getJsdId(){
        return getStr("jsdId");
    }

    /**
     * <p>设置生成日期</p>
     * @param schrq 生成日期
     * @return 当前对象
     */
    public Jsdxq setSchrq(Date schrq){
        set("schrq", schrq);
        return this;
    }

    /**
     * <p>获取生成日期</p>
     * @return 生成日期
     */
    public Date getSchrq(){
        return getDate("schrq");
    }

    /**
     * <p>设置订单总额</p>
     * @param ddze 订单总额
     * @return 当前对象
     */
    public Jsdxq setDdze(String ddze){
        set("ddze", ddze);
        return this;
    }

    /**
     * <p>获取订单总额</p>
     * @return 订单总额
     */
    public String getDdze(){
        return getStr("ddze");
    }

    /**
     * <p>设置结算金额</p>
     * @param jsje 结算金额
     * @return 当前对象
     */
    public Jsdxq setJsje(String jsje){
        set("jsje", jsje);
        return this;
    }

    /**
     * <p>获取结算金额</p>
     * @return 结算金额
     */
    public String getJsje(){
        return getStr("jsje");
    }

    /**
     * <p>设置调账金额</p>
     * @param tzje 调账金额
     * @return 当前对象
     */
    public Jsdxq setTzje(String tzje){
        set("tzje", tzje);
        return this;
    }

    /**
     * <p>获取调账金额</p>
     * @return 调账金额
     */
    public String getTzje(){
        return getStr("tzje");
    }

    /**
     * <p>设置应付金额</p>
     * @param yfje 应付金额
     * @return 当前对象
     */
    public Jsdxq setYfje(String yfje){
        set("yfje", yfje);
        return this;
    }

    /**
     * <p>获取应付金额</p>
     * @return 应付金额
     */
    public String getYfje(){
        return getStr("yfje");
    }

    /**
     * <p>设置收款银行</p>
     * @param shkyh 收款银行
     * @return 当前对象
     */
    public Jsdxq setShkyh(String shkyh){
        set("shkyh", shkyh);
        return this;
    }

    /**
     * <p>获取收款银行</p>
     * @return 收款银行
     */
    public String getShkyh(){
        return getStr("shkyh");
    }

    /**
     * <p>设置银行账号</p>
     * @param yhzhh 银行账号
     * @return 当前对象
     */
    public Jsdxq setYhzhh(String yhzhh){
        set("yhzhh", yhzhh);
        return this;
    }

    /**
     * <p>获取银行账号</p>
     * @return 银行账号
     */
    public String getYhzhh(){
        return getStr("yhzhh");
    }

    /**
     * <p>设置收款人</p>
     * @param shkr 收款人
     * @return 当前对象
     */
    public Jsdxq setShkr(String shkr){
        set("shkr", shkr);
        return this;
    }

    /**
     * <p>获取收款人</p>
     * @return 收款人
     */
    public String getShkr(){
        return getStr("shkr");
    }

    /**
     * <p>设置联系方式</p>
     * @param lxfsh 联系方式
     * @return 当前对象
     */
    public Jsdxq setLxfsh(String lxfsh){
        set("lxfsh", lxfsh);
        return this;
    }

    /**
     * <p>获取联系方式</p>
     * @return 联系方式
     */
    public String getLxfsh(){
        return getStr("lxfsh");
    }

    /**
     * <p>设置已付金额</p>
     * @param yjfje 已付金额
     * @return 当前对象
     */
    public Jsdxq setYjfje(String yjfje){
        set("yjfje", yjfje);
        return this;
    }

    /**
     * <p>获取已付金额</p>
     * @return 已付金额
     */
    public String getYjfje(){
        return getStr("yjfje");
    }

    /**
     * <p>设置已付款</p>
     * @param yfk 已付金额
     * @return 当前对象
     */
    public Jsdxq setYfk(String yfk){
        set("yfk", yfk);
        return this;
    }

    /**
     * <p>获取已付金额</p>
     * @return 已付金额
     */
    public String getYfk(){
        return getStr("yjfk");
    }




    /**
     * <p>根据条件获取结算单详情列表<br />
     * sqlParaKey:com.htwy.youPu.bean.Jsdxq.findByCondition</p>
     * @param conditions 传入的条件
     * @return 事件预案步骤详情列表
     */
    @Override
    public List<Jsdxq> findByCondition(Map<String,Object> conditions){
        SqlPara sqlPara = getSqlPara("com.htwy.youPu.bean.Jsdxq.findByCondition",conditions);
        return dao().find(sqlPara);
    }

    /**
     * <p>根据分页信息和条件获取结算单详情列表<br />
     * sqlParaKey:com.htwy.youPu.bean.Jsdxq.findByCondition</p>
     * @param conditions 传入的条件
     * @return 事件预案步骤详情列表及分页信息
     */
    @Override
    public Page<Jsdxq> paginateByCondition(Map<String, Object> conditions) {
        int pageNumber = 1;
        int pageSize = WebappConfig.getConfig().getInt("defaultPageSize", 20);
        if(conditions.containsKey("pageNumber")) {
            String pageNumberStr = (String) conditions.get("pageNumber");
            if (StrKit.notBlank(pageNumberStr) && NumberKit.isZNum(pageNumberStr)) {
                pageNumber = Integer.parseInt(pageNumberStr);
            }
        }
        if(conditions.containsKey("pageSize")) {
            String pageSizeStr = (String) conditions.get("pageSize");
            if (StrKit.notBlank(pageSizeStr) && NumberKit.isZNum(pageSizeStr)) {
                pageSize = Integer.parseInt(pageSizeStr);
            }
        }
        return paginateByCondition(pageNumber,pageSize,conditions);
    }

    /**
     * <p>根据分页信息和条件获取事件预案步骤详情列表<br />
     * sqlParaKey:com.htwy.youPu.bean.Chpgl.findByCondition</p>
     * @param pageNumber 当前页数
     * @param pageSize 每页条数
     * @param conditions 传入的条件
     * @return 事件预案步骤详情列表及分页信息
     */
    @Override
    public Page<Jsdxq> paginateByCondition(int pageNumber, int pageSize, Map<String, Object> conditions) {
        SqlPara sqlPara = getSqlPara("com.htwy.youPu.bean.Jsdxq.findByCondition",conditions);
        return dao().paginate(pageNumber,pageSize,sqlPara);
    }

    /**
     * <p>根据主键数组删除事件预案步骤详情<br />
     * sqlParaKey:com.htwy.youPu.bean.Chpgl.deleteByPks</p>
     * @param pks 主键数组
     * @return 删除的条数
     */
    public int deleteByPks(String... pks){
        if(pks != null && pks.length>0) {
            SqlPara sqlPara = getSqlPara("com.htwy.youPu.bean.Jsdxq.deleteByPks", Kv.by("pks",pks));
            int result = Db.update(sqlPara);
            return result;
        }
        return 0;
    }

}